package com.cvpoc.hibernate.dao.impl;

import java.util.ArrayList;
import java.util.List;

import org.springframework.beans.BeanUtils;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import com.cvpoc.dto.EditeurDTO;
import com.cvpoc.hibernate.dao.EditeurDao;
import com.cvpoc.model.Editeur;

public class EditeurDaoImpl extends HibernateDaoSupport implements EditeurDao {

	@Override
	public EditeurDTO findEditeurById(int id) {
		Editeur editeur = (Editeur) getHibernateTemplate().get(Editeur.class, id);

		EditeurDTO editeurDTO = new EditeurDTO();

		BeanUtils.copyProperties(editeur, editeurDTO);

		return editeurDTO;
	}

	@Override
	public List<EditeurDTO> findAllEditeur() {
		List<EditeurDTO> editeurDTOs = new ArrayList<EditeurDTO>();
		EditeurDTO target = null;
		
		List<Editeur> editeurs = getHibernateTemplate().loadAll(Editeur.class);

		for (Editeur editeur2 : editeurs) {
			target = new EditeurDTO();
			BeanUtils.copyProperties(editeur2, target);
			editeurDTOs.add(target);
		}
		return editeurDTOs;
	}

	@Override
	public int createEditeur(EditeurDTO editeurDTO) {
		Editeur editeur = new Editeur();

		BeanUtils.copyProperties(editeurDTO, editeur);
		int idCreate = (Integer) getHibernateTemplate().save(editeur);

		return idCreate;
	}

	@Override
	public void deleteEditeur(int id) {
		Editeur editeur = (Editeur) getHibernateTemplate().load(Editeur.class, id);
		getHibernateTemplate().delete(editeur);
	}

	@Override
	public void updateEditeur(EditeurDTO editeurDTO) {
		Editeur editeur = new Editeur();

		BeanUtils.copyProperties(editeurDTO, editeur);
		getHibernateTemplate().merge(editeur);
	}

}
